Cognitoの送信元アドレスをRoute53のドメインアドレスにカスタマイズ
はじめに
アプリケーションの認証にCognio User Poolを使っている場合、Cognitoから送信されるシステムメールの送信元はデフォルトだと no-reply@verificationemail.com
になっています。
この送信元アドレスをRoute53で取得したドメインのメールアドレスにカスタマイズする方法をご紹介したいと思います。
変更するためには、まずAmazon SES(Simple Email Service)に変更後のアドレスを登録する必要があります。
しかし、単にRoute53で取得したドメインだと、メールサーバーがない為SESの検証メールを受信できずSESに登録できません。 なので今回はAmazon SNS(Simple Notification Service)を使ってSESの検証メールを別の受信アドレスに飛ばして進めたいと思います。
また、受信できるアドレスであれば以下の手順で変更することができます。
シチュエーション
- SESは東京リージョンでは使えないのでここではバージニアリージョンを使用
- ドメインはRoute53で取得済み
- ドメイン:
okaharuna.ga
- 変更後のアドレス:
no-reply@okaharuna.ga
- 検証メールを受け取るアドレス:
test@gmail
- DKIM認証
大まかな手順
- ドメインの登録&検証(SES)
- トピック&サブスクリプションの作成(SNS)
- 受信ルールの設定(SES)
- メールアドレスの登録&検証(SES)
- 送信元アドレスの設定(Cognito)
手順
ドメインの登録&検証(SES)
- コンソールSESページの左ペインから
Domains
を選択します。 Verify a New Domain
をクリックします。-
ドメインを入力して
Verify This Domain
をクリックします。DKIM認証が必要な場合はチェックを入れましょう。 -
ドメインの検証がpendingになったので次はDNSの設定です。ドメインがRoute53にある場合は
Use Route53
のボタンが出てきます。これを押せば自動的にレコードを追加してくれるので楽チンです。 -
MXレコードにもチェックを入れて、
Create Recode Set
をクリックします。 -
pending verification
のステータスでドメインが追加されています。 -
Route53の方を見てみると各レコードが自動的に追加されています。
トピック&サブスクリプションの作成(SNS)
SESの検証メールを受信するための設定を行います。 作成したトピックをSESから設定するため、バージニアリージョンを使用します。
- SNSコンソールを開き左ペインからトピックを選択します。
新しいトピックの作成
をクリックします。-
任意のトピック名を入力して作成します。
-
トピックが作成できたら実際に受信するメールアドレスを設定するサブスクリプションを作成します。トピックにチェックをつけて
アクション
のプルダウンを開いたらトピックへのサブスクリプション
を選択します。 -
プロトコルに
Email
を選択して、エンドポイントには実際に検証メールを受信するアドレスを入力します。 -
サブスクリプションが作成されるとエンドポイントに設定したアドレスに検証メールが届いています。 メール内の
Confirm subscription
のリンクをクリックします。 -
リンクを踏むと
Subscription confirmed!
のページが開かれます。
これでエンドポイントの設定が完了です。 次に、SESで受信ルールを作成します。
受信ルールの設定(SES)
- SESコンソールを開き、左ペインから
Rule Sets
を選択します。開いたらCreate a Receipt Rule
をクリックします。 -
Receipient欄に送信元に設定したいアドレスを入力して、
Add Receipient
をクリックします。 -
statusが
pending
の状態で追加されたら、Next Step
をクリックします。 -
ここで先程作成したSNSトピックを設定します。
Add action
でSNS
を選択し、プルダウンから作成したSNSトピックを選択したらNext Step
をクリックします。 ※プルダウンに表示されない場合、別リージョンになっている可能性があります。 -
確認して
Create Rule
ここまでで、no-reply@okaharuna.ga
宛のメールを test@gmail
で受信できるようになりました。
次はSESにno-reply@okaharuna.ga
を登録します。
メールアドレスの登録&検証(SES)
- SESコンソールの
Email Addresses
を選択して、Verify This Email Address
をクリックします。 -
送信元アドレスを入力して
Verify a New Email Address
で登録します。 -
登録すると、
test@gmail
宛に検証メールが届いているかと思います。 件名はAmazon SES Email Receipt Notification
です。 メール内のhttps://email-verification.us-east-1.amazonaws.com
で始まる検証リンクがあるはずなので、それをクリックしましょう。
クリックするとこんな画面になります。
メールアドレスのstatusもpending
からverified
になっていることを確認します。
送信元アドレスの設定
ここでようやくno-reply@okaharuna.ga
をCognitoの送信元アドレスに設定できるようになります。
テスト
試しにユーザーを作成してみましょう。
招待メールの送信元アドレスがきちんとRoute53のドメインのアドレスに変更できています。
まとめ
Cognitoのシステムメールの送信元アドレスをRoute53のドメインのアドレスに変更する方法をご紹介しました。 送信元に設定したいアドレスが、メールを受信できないアドレスであっても、SNSのトピックとSESの受信ルールを設定する事で検証することができました。
ちなみに今回使用したドメインはfreenomで取得したものです。 freenomで取得したドメインをRoute53で管理する方法は以下の記事で紹介されていますので参考にして下さい。